In the past, reverse engineering of circuits was a straightforward task. A circuit board was examined for traces providing a series of conductive connections between components. Circuit components were then analysed to determine connected elements and finally, a schematic of the board was entered for improvement, re-layout, or incorporation into a current design.
With the advent of MSI, LSI, and VLSI, this process became far more tedious. Initial attempts at reverse engineering integrated circuits relied on visual images of integrated circuit layers. Overlapping portions of a layer of an integrated circuit were photographed such that a portion of the layer is photographed. The images were developed as photographs and the photographs were assembled by hand in order to overlap adjacent images appropriately. Because of the redundant nature of integrated circuits, assembling the overlapping images into a single large composite image was difficult and required some skill.
Once a composite image was formed by taping or gluing the photographs together in an appropriate fashion, analysis of the images began. The analysis was performed by a skilled person in the art of reverse engineering or integrated circuit fault analysis who performed the steps of determining conductors, transistors, capacitors, resistors, etc. and forming a schematic of the circuit in dependence upon the analysis. Unfortunately, similarities of colour, contrast, and other output data provided by imaging systems used in reverse engineering, are often not determinative of similarity of material(s).
Reverse engineering a complex integrated circuit often represents several man months of effort and requires significant contribution by highly skilled individuals. Extraction of information requires skilled individuals to analyse images of layers and identify regions of particular materials based on experience and deduction. In essence, skilled individuals reconstruct layout information. Even though this approach is currently acceptable, it is very costly due to the time and effort required. For example, a single integrated circuit may comprise 10,000 images for a single layer. To analyse and infer information for each image is a very time consuming process.
It would be advantageous to automate some of the functions required to reverse engineer or analyse layers within an integrated circuit (IC).